// package springtest.testjavaoplog;
//
// import java.lang.reflect.Field;
// import java.util.ArrayList;
// import java.util.HashMap;
// import java.util.List;
// import java.util.Map;
//
// import org.bson.types.BSONTimestamp;
// import org.bson.types.ObjectId;
// import org.json.JSONObject;
// import org.springframework.data.mongodb.core.MongoTemplate;
// import org.springframework.data.mongodb.core.query.Criteria;
// import org.springframework.data.mongodb.core.query.Query;
//
// import com.mongodb.BasicDBObject;
// import com.mongodb.DB;
// import com.mongodb.DBCursor;
// import com.mongodb.DBObject;
// import com.mongodb.MongoClient;
//
/// **
// * @author chenzhiqiang
// * @date 2018-02-26 16:04:08
// */
//
// public class JavaReadOplog {
// @SuppressWarnings("deprecation")
// public static void main(String[] args) throws Exception {
// MongoClient mongoClient = new MongoClient("localhost", 27111);
// DB db = mongoClient.getDB("local");
// DBCursor cursor = db.getCollection("oplog.rs").find();
// while (cursor.hasNext()) {
// DBObject object = cursor.next();
// String ns = (String) object.get("ns");
// // System.out.println(a);
// if (ns.trim() != null && ns.equals("tets.tets11")) {
// System.out.println(object.get("ns") + " " + object.get("o"));
// // 获取mongoentity的全类名,并实例化
// String className = (String) object.get("_class");
// Class<?> cls = Class.forName(className);
// Object mongoentity = cls.newInstance();
// Field[] declaredFields = cls.getDeclaredFields();
// // 根据属性名获取对应的值，并赋值给entity
// for (Field field : declaredFields) {
// field.setAccessible(true);
// String name = field.getName();
// Class<?> type = field.getType();
// }
// }
// }
// }
//
// // 数据映射
// @SuppressWarnings("deprecation")
// // @Test
// public void demo() throws Exception {
// MongoClient mongoClient = new MongoClient("localhost", 27111);
// MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, "tets");
// DB db = mongoClient.getDB("local");
// BSONTimestamp ts = null;
// DBCursor cursor = db.getCollection("oplog.rs").find();
// while (true) {
// while (cursor.hasNext()) {
// DBObject dbObject = cursor.next();
// // 得到的是数据库加集合名 中间.分开。
// String ns = (String) dbObject.get("ns");
// if (ns.trim() != null && ns.equals("tets.tets11")) {
// String collectionName = ns.split("\\.")[1];
// System.out.println(collectionName);
// // 确定数据是增加/修改/删除 i增加 u修改 d删除
// String change = (String) dbObject.get("op");
// String value = dbObject.get("o").toString();
// JSONObject jsonObject = new JSONObject(value);
// JSONObject jsonObject2 = jsonObject.getJSONObject("_id");
// // 得到了变化的数据的id
// System.out.println(jsonObject2.get("$oid"));
// System.out.println(change);
// // 记录上次查询的位置
// ts = (BSONTimestamp) dbObject.get("ts");
// Criteria criteria = Criteria.where("id").is(jsonObject2.get("$oid"));
// Query query = new Query(criteria);
// System.out.println(dbObject.get("ts"));
//
// DBCursor result =
// mongoClient.getDB(ns.split("\\.")[0]).getCollection(collectionName).find();
// System.out.println(new BasicDBObject("_id", new ObjectId()));
// Thread.sleep(5000);
//
// }
// }
// // 游标查询从上次查询的位置开始查询
// cursor = db.getCollection("oplog.rs").find(new BasicDBObject("ts", new
// BasicDBObject("$gt", ts)));
// }
// }
//
// // 得到的更改数据映射到solrentity
// public void demo1() throws Exception {
// // key为集合名字， value为class全类名
// Map<String, String> cls = new HashMap<>();
// Class.forName("123");
// List lis = new ArrayList();
// // tets.tets11 { "_id" : { "$oid" : "5a951d1ee00dae0e0fa1a94c"} , "name"
// // : "123" , "title" : "456"}
// // 反射
//
// }
// }
